李守中

FreeBSD 13 NFS mountd man(8) page 2020 中文译本

Table of Contents

1. 译者总注

1.1. 关于此译本

李守中是开源软件理念坚定的支持者,所以译本虽不是软件,但依旧仿照开源软件的协议发布:

  • 无担保:本文作者不保证作品内容准确无误,亦不承担任何由于使用此文档所导致的损失。
  • 自由使用:任何人都可以自由地 阅读/链接/打印 此文档,无需任何附加条件。
  • 名誉权:任何人都可以自由地 转载/引用/再创作 此文档,但必须保留作者署名并注明出处。

如果读者发现作品中有错误的地方,劳请来信指出。任何提高作品质量的建议李守中都将虚心接纳。

1.2. 原文档来源

本文档根据 FreeBSD 13.2 NFS mountd manpage (man 8 mountd) 翻译。

1.3. 译者的话

对于直译后无法准确描述软件行为的句子,李守中会根据软件行为对这些句子进行意译。

对于必须添加很多内容才能实现意译的句子,李守中会尽量用直译 + 译者注 的方式来翻译。

受限于李守中的中文水平,在对句子进行意译时可能会偏离作者的本意,请读者谨慎参考。

有能力的读者可以从此链接 FreeBSD_13_NFS_mountd_man(8)_page_2020.txt 下载英文原文与本文做对照。


2. 名称

mountd -- 处理远程的 NFS mount 请求

3. 摘要

mountd [-2delnRrS] [-h <bindip>] [-p <port>] [<exportsfile> ...]

4. 描述

mountd 工具是用来处理从其他 client 发来的 NFS mount 请求的 server。它在 NFS 服务器规范中指定的端口侦听服务请求;具体请看 Network File System Protocol Specification, RFC1094, Appendix A and NFS: Network File System Version 3 Protocol Specification, RFC1813, Appendix I。

下面是可用的选项:

-2

让所有 client 强制以 NFSv2 协议挂载 mountd 所在 server 的目录。

-d

输出调试信息。mountd 不会转入后台运行,将会输出调试信息到 stderr。

-e

别管它是干嘛用的。为了兼容旧版本才保留了这个选项。

-h <bindip>

指定要处理 TCP 和 UDP 请求的 IP 地址。这个选项可以多次使用。如果不指定该选项,mountd 会监听 INADDR_ANY 地址。需要注意,在使用该选项指定要监听的地址时,mountd 不会自动添加 127.0.0.1 到监听地址列表中,而使用 IPv6 时,::1 会被自动添加到监听列表中。

-l

记录所有成功的 mount 请求。

-n

允许处理非 root 用户的挂载请求。仅当有需要它的客户端 (如 PC) 时才应指定。它会自动清除 vfs.nfsd.nfs_privport 参数的值,该参数控制内核是否只接受来自保留端口的 NFS 请求。

译者注: 保留端口意思是小于 1024 的端口号。使用 -n 选项意味着内核可以接受来自高于 1024 的端口的请求。

-p <port>

强制 mountd 监听指定的端口,同时对 AF_INET 和 AF_INET6 地址生效。该选项确保 mountd 监听指定端口,方便在防火墙中放行相应端口。如果 mountd 无法绑定到此端口,系统日志中将记录相应的错误,然后程序退出。

-R

不启用 mount protocol 并且不注册到 rpcbind(8)。这个选项对只运行 NFSv4 的 server 有用,因为 NFSv4 不再使用 mount ptotocol 和 rpcbind(8)。这也意味着 showmount(8) 命令也不能用了,但 NFSv4 也不用 showmount(8) 来获取可以挂载的路径,所以对于只使用 NFSv4 的情况中也没有影响。

译者注: NFSv4 没有像 NFSv3 那样提供一个类似于 showmount(8) 的程序用来检索所有被以 NFSv4 导出的路径的程序。对于只使用 NFSv4 的 server 来说,由于 NFSv4 不需要 rpcbind(8) 所以 showmount(8) 就无法使用了。只有在开启 NFSv4 的同时,也开启 NFSv3 的支持,让 rpcbind(8) 程序运行起来,这样就可以用支持 NFSv3 的 showmount(8) 来检索所有被导出的目录。

-r

允许 RPC 相应挂载文件的请求。尽管这看起来破坏了 mount protocol 标准,有些无盘工作站需要用这个方法来挂载 swapfile 并让其以一个普通文件的角色工作。因为文件无法在 /etc/exports 文件中被声明导出,所以还应该使用 -alldirs 选项来导出 swapfile 所在的整个目录,这样才能让 swapfile 文件被正常挂载。

<exportsfile>

指定 exports 文件的路径。可以指定多个路径以使用多个 exports 文件。

-S

告诉 mountd 在重新加载导出列表时暂停/恢复 nfsd 线程的执行。这避免了在重新加载导出时执行 NFS RPC 的客户端出现间歇性访问错误,但在重新加载过程中引入了 RPC 响应延迟。如果使用此选项,在重新加载 exports 文件过程中 mountd 又崩溃了,则必须重新启动 mountd 以使 nfsd 线程再次运行。

当 mountd 启动时,它使用 mount(2) 系统调用将导出主机地址和选项加载到内核中。更改 exports 文件后,应向 mountd 守护程序发送 HUP 信号,以使其重新加载导出信息。发送 SIGHUP (kill -s HUP `cat /var/run/mountd.pid`) 后,还应检查系统日志输出以查看 mountd 是否在导出文件中记录了任何解析错误。

如果 mountd 检测到正在运行的内核不包含 NFS 模块,它将尝试使用 kldload(2) 加载包含 NFS 代码的可加载的内核模块。如果失败,或者没有 NFS KLD 可用,mountd 将生成一个 error 并退出。

5. 文件

/etc/exports 文件内列出了要被导出的文件系统

/var/run/mountd.pid 当前运行的 mountd 进程的 PID

/var/db/mountdtab 当前被 client 远程挂载了的文件系统

6. 更多信息

nfsstat(1), kldload(2), nfsv4(4), exports(5), nfsd(8), rpcbind(8), showmount(8)

7. 历史

mountd 工具在 4.4BSD 中首次出现

FreeBSD 13.0 2020.10.11



Last Update: 2023-06-23 Fri 17:17

Generated by: Emacs 28.2 (Org mode 9.5.5)   Contact: [email protected]

若正文中无特殊说明,本站内容遵循: 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议